package com.neusoft.tijian.config;

import com.neusoft.tijian.interceptor.LoginCheckInterceptor;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        /*
//         * addMapping：配置可以被跨域的路径，可以任意配置，可以具体到直接请求路径。
//         * allowedMethods：允许的请求方式，如：POST、GET、PUT、DELETE等。
//         * allowedOrigins：允许访问的url，可以固定单条或者多条内容
//         * allowedHeaders：允许的请求header，可以自定义设置任意请求头信息。
//         * maxAge：配置预检请求的有效时间
//         */
//        registry.addMapping("/**")
//                .allowedOrigins("*")
//                .allowedMethods("*")
//                .allowedHeaders("*")
//                .maxAge(36000);
//    }
    
    private static final long MAX_AGE = 24 * 60 * 60;
    
    @Bean
    public CorsFilter corsFilter(){
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setMaxAge(MAX_AGE);
        source.registerCorsConfiguration("/**",corsConfiguration);
        CorsFilter corsFilter = new CorsFilter(source);
        return corsFilter;
    }

    @Autowired
    LoginCheckInterceptor loginCheckInterceptor;

    @Override //注册拦截器
    public void addInterceptors(InterceptorRegistry registry) {
        //excludePathPatterns 排除路径  .  /* 是一级，只能拦截1级的  /emp /dept, /dept/1 这样就拦截不了
        registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**").excludePathPatterns("/users");
    }


}